package cn.yanxiaohui.service.web.pattern.strategy;

import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * @Description 策略的上下文对象
 * @Author： yanxh<br>
 * @Date 2019/12/5 9:45<br>
 * @Version 1.0<br>
 */
@Component
public class PayContext {
    // 策略映射map
    public static final Map<Integer, PayStrategy> payStrategyMap = new HashMap<Integer, PayStrategy>(0);

    // 提供给策略具体实现类的注册返回
    public static void registerProvider(int subjectId, PayStrategy payStrategy) {
        payStrategyMap.put(subjectId, payStrategy);
    }

    public String pay(Integer code){
        if(code == null){
            return "支付参数异常";
        }
        PayStrategy payStrategy = payStrategyMap.get(code);
        if(payStrategy == null){
            return "支付接口不存在";
        }
        return payStrategy.pay();
    }
}
